package com.rchat.pocmini.message;

import android.util.Log;

import com.airtalkee.sdk.OnMessageListener;
import com.airtalkee.sdk.entity.AirMessage;

import java.util.List;

/**
 * Created by ljd on 2017/2/7.
 * <p>
 * OnMessageListener 接口实现类，返回与用户消息相关的事件。
 */

public class PocAirtalkeeMessageListener implements OnMessageListener {

    //============= MSG_STATE值 ===========
    //状态消息（无）
    public static final int STATE_NONE = AirMessage.STATE_NONE;
    //语音类消息录音开始时的状态
    public static final int STATE_GENERATING = AirMessage.STATE_GENERATING;
    //语音类消息录音上传时的状态
    public static final int STATE_RES_DOING = AirMessage.STATE_RES_DOING;
    //语音类消息录音上传失败的状态
    public static final int STATE_RES_FAIL = AirMessage.STATE_RES_FAIL;
    //消息发送中的状态
    public static final int STATE_SENDING = AirMessage.STATE_SENDING;
    //消息发送成功的状态
    public static final int STATE_RESULT_OK = AirMessage.STATE_RESULT_OK;
    //消息发送失败的状态
    public static final int STATE_RESULT_FAIL = AirMessage.STATE_RESULT_FAIL;

    /**
     * 收到即时消息事件（收到其他用户的即时消息）
     *
     * @param isCustom   是否为自定义消息
     * @param airMessage 收到的消息对象实例
     */
    @Override
    public void onMessageIncomingRecv(boolean isCustom, AirMessage airMessage) {

        PocAirtalkeeMessage.getPocAirtalkeeMessageInstance().messageRecordPlayStart(airMessage);

    }

    /**
     * 登录后会自动收到离线即时消息列表事件（当用户登录后，SDK会自动收到离线消息列表）
     *
     * @param messageList 收到的离线消息列表（一般为多条离线消息）
     */
    @Override
    public void onMessageIncomingRecv(List<AirMessage> messageList) {
    }

    /**
     * 发送的即时消息成功与否的结果
     *
     * @param isCustom   是否为自定义消息
     * @param airMessage 发送的消息对象实例
     * @param isSent     是否发送成功
     */
    @Override
    public void onMessageOutgoingSent(boolean isCustom, AirMessage airMessage, boolean isSent) {
    }


    @Override
    public void onMessageUpdated(AirMessage airMessage) {

    }

    /**
     * 语音消息开始录音的事件
     */
    @Override
    public void onMessageRecordStart() {
    }

    /**
     * 语音消息停止录音的事件
     *
     * @param seconds 如果录音成功则返回录音的秒数，
     *                其他的可能返回值：
     *                2表示为满足最小秒数（1秒以上）；
     *                3表示录音被取消。
     *                特别说明：录音时间长度设定为最小1秒钟，最大60秒钟
     * @param msgCode 语音消息的Code
     */
    @Override
    public void onMessageRecordStop(int seconds, String msgCode) {
    }

    /**
     * 语音消息录音数据传输完成的事件（语音消息录音数据传送完成的事件）
     *
     * @param msgCode 语音消息的Code
     * @param resId   语音消息的资源ID
     */
    @Override
    public void onMessageRecordTransfered(String msgCode, String resId) {
    }

    /**
     * 语音消息播放开始加载数据的事件
     *
     * @param msgCode 语音消息的Code
     * @param resId   语音消息的资源ID
     */
    @Override
    public void onMessageRecordPlayLoading(String msgCode, String resId) {
    }

    /**
     * 语音消息播放完成加载数据的事件
     *
     * @param b       ？？文档没有这个参数
     * @param msgCode 语音消息的Code
     * @param resId   语音消息的资源ID
     * @param bytes   ？？文档没有这个参数
     */
    @Override
    public void onMessageRecordPlayLoaded(boolean b, String msgCode, String resId, byte[] bytes) {
    }

    /**
     * 语音消息开始播放的事件
     *
     * @param msgCode 语音消息的Code
     * @param resId   语音消息的资源ID
     */
    @Override
    public void onMessageRecordPlayStart(String msgCode, String resId) {
    }

    /**
     * 语音消息停止播放的事件
     *
     * @param msgCode 语音消息的Code
     * @param resId   语音消息的资源ID
     */
    @Override
    public void onMessageRecordPlayStop(String msgCode, String resId) {
    }
}
